iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 7

Day7 Spring Boot中的配置管理:如何使用application.properties/yml檔進行配置

  • 分享至 

  • xImage
  •  

在Spring Boot中,配置可以通過application.properties或application.yml兩種文件進行管理。今天介紹這兩種格式的使用方式,以及如何進行配置管理,以滿足應用的需求

理解配置文件的基本概念

application.properties

application.properties是Spring Boot應用的默認配置文件,採用鍵值對的形式來進行配置

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

application.yml

application.yml是另一種配置文件格式,使用YAML語法,比起application.properties更具可讀性,尤其是當設定項目較多時。例如,上述配置可以用YAML格式表示為:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

要選擇哪種格式

  • 簡單配置:如果配置項目較簡單且數量不多,使用application.properties即可
  • 複雜配置:當配置涉及到多級嵌套或較多配置時,application.yml更適合,因為其結構更清晰,可讀性更高

在配置文件中,你可以定義多種屬性,包括:

  • 伺服器端口:
server.port=8081  # 改變預設端口
  • 數據源配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
  • 日誌級別:
logging.level.root=INFO
  • 自定義屬性:
app.name=My Spring Boot Application
app.version=1.0

Spring Boot支持不同配置的分環境管理,例如可以根據應用的運行環境來使用不同的配置文件:application-dev.properties、application-prod.properties等。可以使用 spring.profiles.active 属性來指定當前的配置檔:

spring.profiles.active=dev

然後在 application-dev.properties 中定義開發環境的特定設置,在 application-prod.properties 中定義生產環境的特定設置。

使用@ConfigurationProperties進行自定義配置

除了基本的屬性設定外,您還可以通過@ConfigurationProperties註解來綁定屬性到Java對象,這對於組織邏輯相關的設定項非常有用。

定義配置類

首先,創建一個Java類用於綁定屬性:

@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    
    private String name;
    private String version;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }
}

然後在 application.yml 中配置這些屬性:

app:
  name: My Spring Boot Application
  version: 1.0

在你的應用程序中,你可以自動注入這個配置類以使用配置的值:

@RestController
public class WelcomeController {

    @Autowired
    private AppConfig appConfig;

    @GetMapping("/welcome")
    public String welcome() {
        return "Welcome to " + appConfig.getName() + " v" + appConfig.getVersion();
    }
}

在測試中使用配置

Spring Boot也支持在測試中使用application.properties或application.yml。你可以在測試類中使用@TestPropertySource指定其他屬性源。

例如可以創建一個測試文件application-test.properties:

app.name=Test Application

然後在測試中使用:

@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
public class AppConfigTest {

    @Autowired
    private AppConfig appConfig;

    @Test
    public void testAppConfig() {
        assertEquals("Test Application", appConfig.getName());
    }
}

使用application.properties和application.yml進行Spring Boot配置管理是非常直觀和靈活的。通過適當的配置設置,開發者可以清晰地管理應用的屬性,從而使應用程序在不同環境下的工作更為簡便。無論是簡單的應用還是複雜的企業應用,正確的配置管理皆能提高開發效率和可維護性


上一篇
Day6 使用Spring Boot進行單元測試:測試API與服務的最佳實踐
下一篇
Day8 利用Spring Boot整合模板引擎(Thymeleaf):實作簡易的網頁前端顯示
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言